package es.antonio.duarte.abrahamAdmin.dao.hibernate;

import java.util.Collection;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Example;
import es.antonio.duarte.abrahamAdmin.dao.FraseDAO;
import es.antonio.duarte.abrahamAdmin.model.Frase;

/**
 * Implementacion del DAO de Frases con Hibernate.
 * @author Antonio Duarte
 */

public class FraseDAOImpl extends DAOGeneralImpl implements FraseDAO {

   /**
    * Consulta de frases por frase.
    * @param frase Frase por la cual se buscaran en los textos de las frases
    * @return Lista de frases que cumplen con el texto(vacia si no hay
    *         registros)
    */
   public final Collection consultarPorFrase(final String fr) {
      List resultados = null;
      Frase frase = new Frase();
      frase.setFrase(fr);
      Criteria criterios = getSessionFactory().getCurrentSession().createCriteria(
               Frase.class);
      criterios = criterios.add(Example.create(frase));
      resultados = criterios.list();
      return resultados;
   }

   /**
    * Consulta de frases por autor.
    * @param autor Autor por el cual se buscaran las frases
    * @return Lista de frases que cumplen con el autor(vacia si no hay
    *         registros)
    */
   public final Collection consultarPorAutor(final String au) {
	   List resultados = null;
	   Frase frase = new Frase();
	   frase.setAutor(au);
	   Criteria criterios = getSessionFactory().getCurrentSession().createCriteria(
			   Frase.class);
	   criterios = criterios.add(Example.create(frase));
	   resultados = criterios.list();
	   return resultados;
   }
   
   /**
    * Consulta de frases por tema.
    * @param tema Tema por el cual se buscaran las frases
    * @return Lista de frases que cumplen con el tema(vacia si no hay
    *         registros)
    */
   public final Collection consultarPorTema(final String t) {
	   List resultados = null;
	   Frase frase = new Frase();
	   frase.setTema(t);
	   Criteria criterios = getSessionFactory().getCurrentSession().createCriteria(
			   Frase.class);
	   criterios = criterios.add(Example.create(frase));
	   resultados = criterios.list();
	   return resultados;
   }
   
}
